package Gestores.DtoObjects;


import Gestores.DaoInterfaces.DetallePagoDAO;
import Gestores.DataBaseLink;
import Gestores.Entidades.EntidadCuota;
import Gestores.Entidades.EntidadDetalleLaboral;
import Gestores.Entidades.EntidadDetallePago;
import Gestores.Entidades.EntidadPagoCertificado;
import Gestores.NucleoBaseDatos;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class DetallePagoDTO implements DetallePagoDAO {
    
    
    private DataBaseLink conn;
   public DetallePagoDTO(){
       conn= NucleoBaseDatos.getInstance();
   }

    @Override
    public void insertar(Object objeto) throws Exception {
        EntidadDetallePago entidad=(EntidadDetallePago)objeto;
        //InsertarDetallePago(mes int, a int, afi varchar(5), monto int, f Date)
        String comando="call InsertarDetallePago("+String.valueOf(entidad.getId_mes())+","
                +String.valueOf(entidad.getId_A())+",'"+entidad.getId_afiliado()+"',"+
                String.valueOf(entidad.getMonto())+",'"+entidad.getFecha().toString()+"');";
        conn.executeSql(comando);
    }

    @Override
    public void actualizar(Object primaryKey, Object objeto) throws Exception {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void eliminacionLogica(Object objeto) throws Exception {
         EntidadDetallePago entidad=(EntidadDetallePago)objeto;
         String comando="call EliminacinLogicaAfiCuota("+String.valueOf(entidad.getId_mes())+","
                +String.valueOf(entidad.getId_A())+",'"+entidad.getId_afiliado()+"');";
        conn.executeSql(comando);
    }

    @Override
    public void eliminacionFisica(Object objeto) throws Exception {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public ArrayList<Object> listarTabla() throws Exception {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

   

    @Override
    public ArrayList<EntidadDetallePago> buscarPorIdAfiliado(String id) throws  Exception {
        ResultSet resultado;
        String palabra="";
        palabra = "Call BuscarPorAfiliado('" + String.valueOf(id) + "');";
        resultado = conn.executeSql(palabra);
        return devolverListaCargada(resultado);
    }

    private ArrayList<EntidadDetallePago> devolverListaCargada(ResultSet resultado) throws SQLException {
        ArrayList<EntidadDetallePago> lista = new ArrayList<EntidadDetallePago>();
        // (int id, int ci, String descripcion, int monto, Date fecha, boolean estado)
        while (resultado.next()) {
            EntidadDetallePago certificado = new EntidadDetallePago(resultado.getInt(1),
                    resultado.getInt(2), resultado.getString(3), resultado.getInt(4),resultado.getInt(5)
                    , resultado.getDate(6).getTime(),resultado.getBoolean(7)
                    );
            if(!certificado.isEstado())
                lista.add(certificado);
        }
        this.conn.CerrarStatement();
        return lista;
    }

    @Override
    public ArrayList<EntidadDetallePago> buscarPorIdUsuario(int id) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public EntidadDetallePago buscar(int idC, String idA, int idU) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public EntidadDetallePago buscarPorAfiCuota(int m, int a, String idA) throws Exception {
        //BuscarPorAfiCuota(m INT, a INT,afi varchar(5))
        EntidadDetallePago entidad;
        String comando="call BuscarPorAfiCuota("+String.valueOf(m)+","+String.valueOf(a)+
                            ",'"+idA+"');";
        ResultSet resultado=conn.executeSql(comando);
        if(resultado.next()){
             entidad= new EntidadDetallePago(resultado.getInt(1),resultado.getInt(2), resultado.getString(3),
                resultado.getInt(4),resultado.getInt(5), resultado.getDate(6).getTime(),resultado.getBoolean(7));
        }else{
            entidad=null;
        }
       
        
        return entidad;
    }

    @Override
    public ArrayList<EntidadDetallePago> buscarPorIdCuota(int m, int a) throws Exception {
       ResultSet resultado;
        String palabra="";
        palabra = "Call  BuscarPorCuota(" + String.valueOf(m) + ","+String.valueOf(a)+");";
        resultado = conn.executeSql(palabra);
        return devolverListaCargada(resultado);
    }

   
}
